﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using System.Collections.Generic;

namespace DECOR.WebApp
{
    public partial class ImprReclamo : System.Web.UI.Page
    {
        private DocReclamoBE DocReclamo = null;

        protected void Page_Init(object sender, EventArgs e)
        {
            //this.validaLogin();
        }

        private void validaLogin()
        {
            if (Session["UsuarioWeb"] == null || Session["UsuarioSAP"] == null)
            {
                Response.Redirect("Login.aspx");
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    cargarReclamo();
                }
                catch (Exception ex)
                {
                    Session["Mensaje"] = ex.Message;
                }
            }
            else
            {
                try
                {
                   
                }
                catch (Exception ex)
                {
                    Session["Mensaje"] = ex.Message;
                }
            }
        }


        #region metodos internos

        //private List<GenericBE> getGenericBE(ClienteWS.GenericBE[] p)
        //{
        //    List<GenericBE> g = new List<GenericBE>();
        //    try
        //    {
        //        foreach (ClienteWS.GenericBE i in p)
        //        {
        //            GenericBE n = new GenericBE();
        //            n.Codigo = i.Codigo;
        //            n.Descripcion = i.Descripcion;
        //            g.Add(n);
        //        }

        //    }
        //    catch
        //    {
        //        g = null;
        //    }


        //    return g;
        //}

        //private List<GenericBE> getGenericBE(ParametroWS.GenericBE[] p)
        //{
        //    List<GenericBE> g = new List<GenericBE>();
        //    try
        //    {
        //        foreach (ParametroWS.GenericBE i in p)
        //        {
        //            GenericBE n = new GenericBE();
        //            n.Codigo = i.Codigo;
        //            n.Descripcion = i.Descripcion;
        //            g.Add(n);
        //        }

        //    }
        //    catch
        //    {
        //        g = null;
        //    }


        //    return g;
        //}   

        private void cargarReclamo()
        {
            string retval = string.Empty;
            DocReclamoBE Doc = (DocReclamoBE)Session["DocRecImpr"];
            //se adiciono para la impresion desde tablet.
            if (Doc == null)
            {
                string numReclamo = Request.QueryString["np"].ToString().Trim();
                Doc = ReclamoBC.Instance.getReclamoImpr(numReclamo);
            }            

            if (Doc != null)
            {
                lblNroReclamo.Text = Doc.Contactos.VBELN.Trim();
                lblFIngre.Text = Doc.Contactos.ERDAT.ToShortDateString();
                lblNIngRec.Text = Doc.Contactos.KTARA.Trim();
                
                if (Doc.Contactos != null)
                  if (Doc.Contactos.VKBUR != null)
                    if (!Doc.Contactos.VKBUR.Equals(""))
                    {
                        //ClienteWS.ClienteWS OfiVenta = new DECOR.WebApp.ClienteWS.ClienteWS();
                        //List<GenericBE> lst = getGenericBE(OfiVenta.listar());
                        List<GenericBE> lst = OficinaBC.Instance.listar();
                        GenericBE g = null;
                        if (lst != null)
                        {
                            g = lst.Find(x => x.Codigo.Equals(Doc.Contactos.VKBUR));
                            if (g != null)
                                lblTienda.Text = g.Descripcion;
                        }
                    }
        
                //DATOS DEL CONSUMIDOR RECLAMANTE
                if (Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")) != null)
                {
                    lblConsNom.Text = Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")).NOMBRE;
                    lblConsDir.Text = Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")).Direccion;
                    lblConsTelf.Text = Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")).Telefono;
                    lblConsMail.Text = Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")).Mail;
                    lblNIF.Text = Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")).NIF;
                }
                if (Doc.Interlocutor.Find(X => X.PARVW.Equals("ZM")) != null)
                {
                    lblCargo.Text = Doc.Interlocutor.Find(X => X.PARVW.Equals("ZM")).Cargo;
                }
                if (Doc.Z_Reclamo != null)
                {
                    DataDDLBE dataDDLBE = new DataDDLBE();
                    List<GenericBE> lstZipCodes = new List<GenericBE>();
                    List<GenericBE> lstAsesores = new List<GenericBE>();
                    List<GenericBE> lstBloEnt = new List<GenericBE>();
                    List<GenericBE> lstBloFac = new List<GenericBE>();
                    List<GenericBE> lstCondExp = new List<GenericBE>();
                    List<GenericBE> lstGrpCond = new List<GenericBE>();
                    List<GenericBE> lstGrpVend = new List<GenericBE>();
                    List<GenericBE> lstMotPed = new List<GenericBE>();
                    List<GenericBE> lstOfVtas = new List<GenericBE>();
                    List<GenericBE> lstSectores = new List<GenericBE>();
                    List<GenericBE> lstTipoDoc = new List<GenericBE>();
                    List<GenericBE> lstTipoVisita = new List<GenericBE>();
                    //------------------------------------------------------------------
                    ParametroBC.Instance.getDataDDL(ref lstZipCodes, ref lstAsesores, ref lstBloEnt, ref  lstBloFac, ref  lstCondExp, ref lstGrpCond,
                                                    ref  lstGrpVend, ref lstMotPed, ref lstOfVtas, ref  lstSectores, ref  lstTipoDoc, ref lstTipoVisita);

                    //---------------------------------------------------
                    dataDDLBE.LstZipCodes = lstZipCodes;
                    dataDDLBE.LstAsesores = lstAsesores;
                    dataDDLBE.LstBloEnt = lstBloEnt;
                    dataDDLBE.LstBloFac = lstBloFac;
                    dataDDLBE.LstCondExp = lstCondExp;
                    dataDDLBE.LstGrpCond = lstGrpCond;
                    dataDDLBE.LstGrpVend = lstGrpVend;
                    dataDDLBE.LstMotPed = lstMotPed;
                    dataDDLBE.LstOfVtas = lstOfVtas;
                    dataDDLBE.LstSectores = lstSectores;
                    dataDDLBE.LstTipoDoc = lstTipoDoc;
                    dataDDLBE.LstTipoVisita = lstTipoVisita;
                    List<GenericBE> lst =null;
                    //ParametroWS.ParametroWS p = new DECOR.WebApp.ParametroWS.ParametroWS();                            
                    //ParametroWS.DataDDLBE dataDDLBE = p.getDataDDL();

                    string ciudad = string.Empty;
                    //lst = getGenericBE(dataDDLBE.LstZipCodes);
                    lst = lstZipCodes;

                    if (lst.Find(x => x.Codigo.Equals(Doc.Z_Reclamo.CPOSTAL)) != null)
                        ciudad = lst.Find(x => x.Codigo.Equals(Doc.Z_Reclamo.CPOSTAL)).Descripcion.Trim();

                    lblConsPerCon.Text = "Nombre: " + Doc.Z_Reclamo.PCONTACTO + " / Direc. :" + Doc.Z_Reclamo.DIRECCION + " / Ciudad: " + ciudad.ToUpper() + " / Telefono: " + Doc.Z_Reclamo.TELEFONO + " / DNI ó RUC: " + Doc.Z_Reclamo.NIF;
                }
                //DESCRIPCION DEL PRODUCTO
                lblDescNroComp.Text = Doc.Contactos.VGBEL==null ? "" :  Doc.Contactos.VGBEL;
                lblDescNroComp0.Text = Doc.Contactos.KTEXT.Trim();
                lblDescFechaComp.Text = Doc.Contactos.KTAEN.ToShortDateString().Equals("01/01/0001") ? "" : Doc.Contactos.KTAEN.ToShortDateString();
                lblDescServ.Text = Doc.Z_Reclamo.NMATNR ==null ? "" :Doc.Z_Reclamo.NMATNR.Trim();
                lblDescCodPrd.Text = Doc.Z_Reclamo.MATNR == null ? "" : Doc.Z_Reclamo.MATNR;
                
                //MOTIVO DEL RECLAMO
                string materiales1 = string.Empty;
                string materiales2 = string.Empty;
                string sep = string.Empty;

                if (Doc.Z_Reclamo.MATNR != null)
                   if (!Doc.Z_Reclamo.MATNR.Equals(""))
                    materiales1 = Doc.Z_Reclamo.MATNR;

                if (Doc.Z_Reclamo.MATNR2 != null)
                   if (!Doc.Z_Reclamo.MATNR2.Equals(""))
                    materiales2 = Doc.Z_Reclamo.MATNR2;

                if (!materiales1.Equals("") && !materiales2.Equals(""))
                    sep =" / ";
                lblMotPrd.Text = materiales1 + sep + materiales2;

                lblMotPrd1.Text = Doc.Contactos.KTAGR;
                foreach (TextoBE t in Doc.Texto)
                {
                    if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO1")))
                    {
                        lblMotPrd0.Text = t.Descripcion;
                        
                    }
                    else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO2")))
                    {
                        lblConsRef.Text = t.Descripcion;
                        
                    }
                }

                //RECLAMO ANTERIOR (ESPECIFICAR)
                lblRecAnt.Text = Doc.Z_Reclamo.RECLA.Trim();

#region XXX
            //    txtFechaI.Text = Doc.Contactos.KTABG.ToShortDateString();
            //    txtFechaF.Text = Doc.Contactos.KTAEN.ToShortDateString();
            //    txtHoraReclamoI.Text = Doc.Contactos.KTABT;
            //    txtHoraReclamoF.Text = Doc.Contactos.KTAET;
            //    txtEmpresa.Text = Doc.Contactos.KUNNR;
            //    txtNroPedido.Text = Doc.Contactos.VGBEL.PadLeft(10, '0');

            //    //Tabla Z
            //    txtMaterial.Text = Doc.Z_Reclamo.MATNR.Trim('0');
            //    txtMaterial2.Text = Doc.Z_Reclamo.MATNR2;
            //    txtReclaRef.Text = Doc.Z_Reclamo.RECLA;

            //    // Textos
            //    foreach (TextoBE t in Doc.Texto)
            //    {
            //        if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO1")))
            //            txtTextoTratemInicial.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO2")))
            //            txtTextoNotaDireccion.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO3")))
            //            txtTextoSeguimiento.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO4")))
            //            txtTextoDiagnostico.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO5")))
            //            txtTextoSolucion.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO6")))
            //            txtTextoPersonaContacto.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO7")))
            //            txtTextoDatosFacturacion.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO8")))
            //            txtTextoPedidoReferencia.Text = t.Descripcion;
            //        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO9")))
            //            txtTextoMotivosOtros.Text = t.Descripcion;
            //    }
            //    //combos
            //    cargaCombos();
            //    //interlocutores
            //    cargarDatosInter();
            //    cargarInfoCliente();
            //    tcMain.Enabled = true;
            //    manejarBotonera();
            //    //seleccionar grupo vendedores
            //    if (((string)Session["Operacion"]).Equals("editar"))
            //    {
            //        ddlGrupoVend.SelectedValue = DocReclamo.Contactos.VKGRP;
            //        ddlResultado.SelectedValue = DocReclamo.Contactos.KTAER;
            //        ddlMotivo.SelectedValue = Doc.Contactos.KTAGR;
            //        //estatus
            //        ddlStatus.SelectedValue = DocReclamo.Contactos.KTAST;

            //        if (!DocReclamo.Z_Reclamo.STAT3.Equals(""))
            //        {
            //            txtUsuarioStatus.Text = DocReclamo.Z_Reclamo.USER3;
            //            txtDescripcion.Text = DocReclamo.Z_Reclamo.CMM3;
            //            txtFechaSts.Text = DocReclamo.Z_Reclamo.FCHA3.ToShortDateString();
            //        }
            //        else if (!DocReclamo.Z_Reclamo.STAT2.Equals(""))
            //        {
            //            txtUsuarioStatus.Text = DocReclamo.Z_Reclamo.USER2;
            //            txtDescripcion.Text = DocReclamo.Z_Reclamo.CMM2;
            //            txtFechaSts.Text = DocReclamo.Z_Reclamo.FCHA2.ToShortDateString();
            //        }
            //        else if (!DocReclamo.Z_Reclamo.STAT1.Equals(""))
            //        {
            //            txtUsuarioStatus.Text = DocReclamo.Z_Reclamo.USER1;
            //            txtDescripcion.Text = DocReclamo.Z_Reclamo.CMM1;
            //            txtFechaSts.Text = DocReclamo.Z_Reclamo.FCHA1.ToShortDateString();
            //        }

                //    }

#endregion 
            }
        }

        #endregion 
    }
}
